草庐IT

Java Swingworker 和多线程

全部标签

c++ - 如何在单独的线程上设置 QSerialPort?

按照官方文档,我正在尝试这样做:MainWindow::MainWindow(QWidget*parent):QMainWindow(parent){QThread*thread=newQThread;Worker*worker=newWorker();worker->moveToThread(thread);//initconnectionsthread->start();}worker构造函数:Worker::Worker(QObject*parent):QObject(parent){serial=newQSerialPort(this);//passingtheparent,w

C++ 11 线程,错误调用纯虚函数

这是我正在尝试编译的非常简单的C++11线程API代码#include#includeusingnamespacestd;voidthreadFunction(void){cout关于将其编译为g++thread1.cpp-pthread-std=c++11我收到以下错误纯虚方法调用在没有事件异常的情况下终止调用中止有什么问题吗,求大神帮忙请注意,我是在配备ARMA8处理器的BeagleboneBlack上编译的 最佳答案 这是libstdc++或Clang中的错误,具体取决于您询问的对象。如果您使用的是2013年10月之后发布的C

c++ - steady_clock 跨线程是单调的吗?

std::chrono::steady_clock的单调属性是否跨线程保留?例如,假设我有以下程序。#include#include#includeusingnamespacestd;usingnamespacechrono;mutexm;inti=0;voiddo_something(int&x){x+=1;}voidf1(){unique_locklock(m);autotime=steady_clock::now();do_something(i);}voidf2(){unique_locklock(m);autotime=steady_clock::now();do_somet

c++ - 使用多线程处理 SIGTERM 的正确方法

我在Raspberry上有一个多线程程序,我想在其中处理SIGTERM并正常关闭所有内容。问题是我有一个在阻塞套接字上调用了recvfrom()的后台线程。根据我对手册页的理解,如果我退出我的处理程序,所有系统调用都应该被唤醒并返回-1并且errno设置为EINTR。但是在我的例子中,recvfrom调用一直挂起。1)总的来说,我的理解是否正确,即所有具有能够被信号唤醒的阻塞系统调用的线程都应该在这种情况下唤醒?2)会不会是操作系统在我的thead上设置了一些特殊的信号掩码?有趣的是我使用的是VideoCore原语,而不是pthread,也许这就是原因?这是一个小测试示例:#inclu

c++ - 您推荐哪些线程分析工具?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。我的主要IDE是VisualStudio2005,我有一个大型C/C++项目。我对推荐的线程分析工具感兴趣。我的意思是,我需要一个静态或动态的工具来帮助查找竞争条件、死锁等。到目前为止,我随便研究了以下内容:1.英特尔线程检查器:我不相信它与VS2005相关?2.Valgrind/Helgrind:免费。3.Coverity:如果我理解正确的话,这是一个

c++ - 多线程——我需要锁定读取数据吗?

看这段代码:intdata=5;voidThread1(){if(data==5){//nothing}}voidThread2(){if(data==2){//nothing}}在这种情况下,我是否需要在if(data==..)之前使用EnterCriticalSection/MutexLock? 最佳答案 如果您只是读取数据,则不需要锁定。如果您正在写入数据并且您关心读取的顺序数据,那么您需要使用CS来确保顺序正确。(请注意,如果对象具有未在原子操作中更新的更复杂状态,那么您可能更关心读/写的顺序)。

c++ - 用 fork() 模拟线程

关于使用“fork()函数”和“共享内存”block模拟线程,你有什么想法......这可能吗?对于一个程序,这样做多少合理?(我的意思是,它会运作良好吗...?) 最佳答案 首先,不要mixathreadandfork().fork给你一个全新的进程,它是当前进程的拷贝,具有相同的代码段。随着内存镜像的变化(通常这是由于两个进程的不同行为),您可以分离内存镜像,但可执行代码保持不变。任务不共享内存,除非它们使用一些进程间通信(IPC)原语。相比之下,线程是同一任务的另一个执行线程。一个任务可以有多个线程,任务内存对象在线程之间共享

c++ - 多线程观察者模式

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭4年前。Improvethisquestion我有一个问题,主题每次都在不同的线程中更新。因此,无论何时更新主题,它都会用新信息相应地更新观察者。但是,如果观察者列表很长,则需要一些时间来更新所有观察者。想想一个更新非常频繁的主题。当主题更新观察者时,“主题”对象被锁定,因此不能由不同的线程更新。这将为主题创建信息流量或导致信息丢失。您知道在多线程环境中如何处理这些问题吗?另外,谁能推荐一些关于使用C++进行并行编程的书籍?

c++ - 为什么我的线程被一个没有被任何东西占用的关键部分阻塞?

我在C++中遇到临界区问题。我遇到了一个挂起的窗口,当我转储进程时,我可以看到线程在关键部分等待:16Id:b10.b88Suspend:1Teb:7ffae000UnfrozenChildEBPRetAddr0470f1587c90df3cntdll!KiFastSystemCallRet0470f15c7c91b22bntdll!NtWaitForSingleObject+0xc0470f1e47c901046ntdll!RtlpWaitForCriticalSection+0x1320470f1ec0415647entdll!RtlEnterCriticalSection+0x4

c++ - 将程序拆分为 4 个线程比单个线程慢

过去一周我一直在编写一个光线追踪器,并且已经达到了这样一个地步,它已经足够多线程有意义了。我曾尝试使用OpenMP对其进行并行化处理,但使用更多线程运行它实际上比使用一个线程运行它要慢。阅读其他类似问题,尤其是关于OpenMP的问题,一个建议是gcc可以更好地优化串行代码。但是,使用exportOMP_NUM_THREADS=1运行下面的编译代码的速度是使用exportOMP_NUM_THREADS=4的两倍。IE。两次运行的编译代码相同。用时间运行程序:>exportOMP_NUM_THREADS=1;time./raytracerreal0m34.344suser0m34.310s